home *** CD-ROM | disk | FTP | other *** search
- 100 CLS:PRINT TAB(10);"PRINT A CALENDAR FOR ANY YEAR SINCE 1582":PRINT
- 110 '
- 120 ' Judson D. McClendon
- 130 ' 844 Sun Valley Road
- 140 ' Birmingham, AL 35215
- 150 '
- 160 ' Compuserve 74415,1003
- 165 ' Additions for split year by Lew Paper
- 170 '
- 200 DEF FNDOW(M,D,Y)=(D+M+M+INT((M+1)*.6)+Y+Y\4-Y\100+Y\400+1) MOD 7
- 210 DIM MON$(23),MAX(23),DOM(23),DOW(23) ' Dimension by L.P.
- 220 FOR I=1 TO 12 :READ MON$(I) :NEXT
- 230 FOR I=1 TO 11 : MON$(I + 12) = MON$(I): NEXT ' L.P.
- 240 DATA " J A N U A R Y "," F E B R U A R Y "," M A R C H "
- 250 DATA " A P R I L "," M A Y "," J U N E "
- 260 DATA " J U L Y "," A U G U S T "," S E P T E M B E R"
- 270 DATA " O C T O B E R "," N O V E M B E R "," D E C E M B E R "
- 280 FOR I=1 TO 12 :READ MAX(I) :NEXT
- 290 FOR I=1 TO 11: MAX(I + 12) = MAX(I): NEXT ' L.P.
- 300 DATA 31,28,31,30,31,30,31,31,30,31,30,31
- 400 INPUT "What year to start: ",YEAR1 ' Variable name by L.P.
- 410 IF YEAR<100 THEN YEAR=YEAR+1900 ' Assume 20th century if not specified
- 420 IF YEAR<1582 THEN PRINT "Not valid before 1582" :GOTO 400
- 430 YEAR2 = YEAR1 + 1 ' L.P.
- 440 INPUT "What month to start: ",MONTH1 ' L.P.
- 450 IF (MONTH1 < 1) OR (MONTH1 > 12) THEN PRINT, "Not a valid month": GOTO 440 'L.P.
- 460 MONTH2 = MONTH1 + 11 ' L.P.
- 470 IF ((YEAR1 MOD 4)<>0) OR ((YEAR1 MOD 100)=0 AND (YEAR1 MOD 400)<>0) THEN 490 ' L.P. for variable and branch
- 480 MAX(2)=29
- 490 IF ((YEAR2 MOD 4)<>0) OR ((YEAR2 MOD 100)=0 AND (YEAR2 MOD 400)<>0) THEN 510 ' L.P.
- 500 MAX(14) = 29 ' L.P.
- 510 PRINT :INPUT "How many copies";COPIES
- 600 FOR COUNT=1 TO COPIES
- 610 LPRINT
- 620 IF MONTH1 = 1 THEN LPRINT TAB(27);"CALENDAR FOR THE YEAR";YEAR1: GOTO 640 ' L.P. for IF and GOTO
- 630 LPRINT TAB(24);"CALENDAR FOR THE YEARS";YEAR1; " -"; YEAR2 ' L.P.
- 640 LPRINT ' L.P.
- 650 LPRINT :LPRINT
- 660 FOR MM=MONTH1 TO MONTH2 STEP 3 ' L.P. FOR MONTH?
- 670 FOR MONTH=MM TO MM+2
- 680 LPRINT TAB((MONTH-MM)*24+6);MON$(MONTH);
- 690 NEXT
- 700 LPRINT ' L.P.
- 710 IF MONTH1 = 1 THEN 770 ' L.P.
- 720 FOR MONTH=MM TO MM+2 ' L.P.
- 730 LPRINT TAB((MONTH-MM)*24+12); ' L.P.
- 740 IF MONTH < 13 THEN LPRINT YEAR1; ELSE LPRINT YEAR2; ' L.P.
- 750 NEXT ' L.P.
- 760 LPRINT ' L.P.
- 770 LPRINT ' L.P. to remove one LPRINT
- 780 FOR MONTH=MM TO MM+2
- 790 LPRINT TAB((MONTH-MM)*24+6)"SU MO TU WE TH FR SA";
- 800 DAY=1 :GOSUB 1100 :DOW(MONTH)=DOW :DOM(MONTH)=1
- 810 NEXT
- 820 LPRINT
- 830 FOR WEEK=1 TO 6
- 840 FOR MONTH=MM TO MM+2
- 850 WHILE DOM(MONTH)<=MAX(MONTH) AND DOW(MONTH)<7
- 860 LPRINT TAB((MONTH-MM)*24+DOW(MONTH)*3+6);"";
- 870 LPRINT USING "##";DOM(MONTH);
- 880 DOM(MONTH)=DOM(MONTH)+1
- 890 DOW(MONTH)=DOW(MONTH)+1
- 900 WEND
- 910 IF DOW(MONTH)>6 THEN DOW(MONTH)=0
- 920 NEXT
- 930 LPRINT
- 940 NEXT
- 950 LPRINT :LPRINT :LPRINT
- 960 NEXT
- 970 LPRINT CHR$(12);
- 980 NEXT
- 990 SYSTEM
- 1100 IF MONTH<3 THEN DOW=FNDOW(MONTH+12,DAY,YEAR1-1): RETURN ' L.P. to remove ELSE
- 1110 IF MONTH<15 THEN DOW=FNDOW(MONTH,DAY,YEAR1): RETURN ' L.P. for 15 and RETURN
- 1120 DOW=FNDOW(MONTH-12,DAY,YEAR2) ' L.P.
- 1130 RETURN